#include <GUI.h>

#include <iostream>
using namespace std;

namespace td
{
namespace gui
{

TDgui::TDgui(){

}

TDgui::TDgui(char* fonte, IrrlichtDevice *gerenciadorDispositivo)
{
	this->gd = gerenciadorDispositivo;

	gg = this->gd->getGUIEnvironment();
	s = gg->getSkin();
	f = gg->getFont(fonte);
	s->setColor(EGUI_DEFAULT_COLOR(EGDC_BUTTON_TEXT),SColor(255,255,255,255));

	//Define como a fonte padrao
	s->setFont(f);
	//Inclusive para a barra de dica
	s->setFont(gg->getBuiltInFont(), EGDF_TOOLTIP);
}

TDgui::~TDgui(void)
{
}

TDBotao* TDgui::addButton(int x, int y, int h, int w, const wchar_t* texto, const wchar_t* dica, int id, TDElemento* pai)
{
	//adiciona um botao: em um local, com ID, um texto e uma dica
	return gg->addButton(rect<s32>(x,y,x+w,y+h), pai, id, texto, dica);
}

void TDgui::setImagemBotao(TDBotao* botao, char* imagem)
{
	botao->setImage(gg->getVideoDriver()->getTexture(imagem));
}

TDCheckBox* TDgui::addCheckBox(bool checked, int x, int y, int w, const wchar_t* texto, int id, TDElemento* pai)
{
	return gg->addCheckBox(checked, rect<s32>(x,y,w,50),pai,id, texto);
}

TDText* TDgui::addText(int x, int y, int h, int w, bool borda, const wchar_t* texto, int id, TDElemento* pai)
{
	return gg->addEditBox(texto,rect<s32>(x,y,y+h,x+w),borda,pai,id);
}

TDTexto* TDgui::addLabel(int x, int y, int w, int h, bool borda, const wchar_t* texto, int id, TDElemento* pai)
{
	return gg->addStaticText(texto,rect<s32>(x,y,x+w,y+h),borda,true,pai,id);
}

TDJanela* TDgui::addJanela(int x, int y, int h, int w,const wchar_t* texto, int id, TDElemento* pai)
{ 
	return gg->addWindow(rect<s32>(x,y,x+w,y+h),false,texto,pai,id);
}

TDImagem* TDgui::addImagem(char *imagem,int x, int y, int id, TDElemento* pai)
{ 
	return gg->addImage(gg->getVideoDriver()->getTexture(imagem),position2d<s32>(x,y),true,pai,id,0);
}

IGUIEnvironment* TDgui::getGerenciadorGUI(){
	return gg;
}

} //end namespace gui
} //end namespace td